/*

 
 import java.awt.event.MouseEvent;

import java.awt.event.MouseMotionListener;
import java.util.ArrayList;

import javax.swing.JFrame;

import com.panayotis.gnuplot.JavaPlot;
import com.panayotis.gnuplot.dataset.Point;
import com.panayotis.gnuplot.dataset.PointDataSet;
import com.panayotis.gnuplot.plot.DataSetPlot;
import com.panayotis.gnuplot.style.NamedPlotColor;
import com.panayotis.gnuplot.style.PlotStyle;
import com.panayotis.gnuplot.style.Style;
import com.panayotis.gnuplot.swing.JPlot;

public class Affichage extends JPlot {
	
	ArrayList<PointDataSet<Double>> heure = new ArrayList<PointDataSet<Double>>(24),
									mois = new ArrayList<PointDataSet<Double>>(12);
	PointDataSet<Double> solsticeEte, solsticeHiver, positionStyle;
	JavaPlot jp;
	RotationTerre systeme;
	
	public Affichage() { super(); }
	
	/** Cree et affiche les courbes obtenus a partir du systeme RotationTerre
	 * @param sys un objet RotationTerre /
	public Affichage(RotationTerre sys) {
		super(new JavaPlot(true));
		jp = this.getJavaPlot();
		initDataSet();
		ajoutPoint(positionStyle,sys.getStyle());
		systeme = sys;
		for(int h=0;h<12;h++) { systeme.next();}
		for(int j=1;j<=365;j++) {
			for(int h=0;h<24;h++) {
				if(j==181&&bonneHeure(h)) { ajoutPoint(solsticeHiver,systeme.projection());}
				if(j==364&&bonneHeure(h)) { ajoutPoint(solsticeEte,systeme.projection());}
				if(bonJour(j)!=-1&&bonneHeure(h)) { ajoutPoint(mois.get(bonJour(j)),systeme.projection());}
				ajoutPoint(heure.get(h),systeme.projection());
				systeme.next();
			}
		}
		dessine();
		jp.plot();
		this.addMouseMotionListener(new MouseMotionListener() {
			@Override
			public void mouseMoved(MouseEvent e) {
			// TODO Auto-generated method stub
			}
			 
			@Override
			public void mouseDragged(MouseEvent e) {
			int x = e.getX();
			int y = e.getY();
			double rotX = (double) x / getWidth() * 360;
			double rotY = (double) y / getHeight() * 360;
			// range check
			if (rotX < 0) {
			rotX = 0;
			}
			if (rotX > 360) {
			rotX = 360;
			}
			if (rotY < 0) {
			rotY = 0;
			}
			if (rotY > 360) {
			rotY = 360;
			}
			// set view
			jp.set("view", rotY + "," + rotX);
			// repaint
			plot();
			repaint();
			}
		});
		
	}
	
	/** Verifie si l'heure peut etre affiche
	 * @param h un entier
	 * @return un booleen qui vaut vrai si et seulement si h correspond a une heure pertinente /
	public boolean bonneHeure(int h) {
		return (h<18&&h>6);
	}
	
	public int bonJour(int j) {
		switch(j) {
			case 30 : return 6;
			case 61 : return 7;
			case 92 : return 8;
			case 122 : return 9;
			case 153 : return 10;
			case 183 : return 11;
			case 214 : return 0;
			case 245 : return 1;
			case 273 : return 2;
			case 304 : return 3;
			case 334 : return 4;
			case 365 : return 5;
			default : return -1;
		}
	}
	
	public void initDataSet() {
		for(int i=0;i<24;i++) {
			heure.add(new PointDataSet<Double>(365));
		}
		for(int i=0;i<12;i++) {
			mois.add(new PointDataSet<Double>(24));
		}
		solsticeEte = new PointDataSet<Double>(24);
		solsticeHiver = new PointDataSet<Double>(24);
		positionStyle = new PointDataSet<Double>(1);
	}
	
	/** Ajoute un point a un PointDataSet
	 * @param pds un PointDataSet
	 * @param o un Point3D /
	public void ajoutPoint(PointDataSet<Double> pds, Point3D o) {
		if(o!=null) {
			Double[] tab = {o.x,o.y,o.z};
			pds.add(new Point<Double>(tab));
		}
	}
	
	/** Dessin
	 /
	public void dessine() {
		PlotStyle styleHeures = new PlotStyle(Style.LINES),
				  styleSolstice = new PlotStyle(Style.LINES),
				  stylePosition = new PlotStyle(Style.POINTS),
				  styleMois = new PlotStyle(Style.LINES);
		styleHeures.setLineType(NamedPlotColor.RED);
		styleSolstice.setLineType(NamedPlotColor.BLUE);
		stylePosition.setLineType(NamedPlotColor.BLACK);
		styleMois.setLineType(NamedPlotColor.GREEN);
		
		jp.set("xlabel","'sud'");
		jp.set("ylabel","'ouest'");
		jp.set("zlabel","'altitude'");
		jp.getParameters().getPostInit().add("set key off");
		
		DataSetPlot dsp0 = new DataSetPlot(positionStyle);
		dsp0.setPlotStyle(stylePosition);
		dsp0.setTitle("Style");
		jp.addPlot(dsp0);
		for(int i=7;i<18;i++) {
			if(heure.get(i).size()>0) {
				DataSetPlot dsp = new DataSetPlot(heure.get(i));
				dsp.setPlotStyle(styleHeures);
				dsp.setTitle("h"+i);
				jp.addPlot(dsp);
			}
		}
		for(int i=0;i<12;i++) {
			if(mois.get(i).size()>0&&i!=5&&i!=11) {
				DataSetPlot dsp = new DataSetPlot(mois.get(i));
				dsp.setPlotStyle(styleMois);
				dsp.setTitle("m"+i);
				jp.addPlot(dsp);
			}
		}
		if(solsticeEte.size()>0) {
			DataSetPlot dsp1 = new DataSetPlot(solsticeEte);
			dsp1.setPlotStyle(styleSolstice);
			dsp1.setTitle("SolsticeEte");
			jp.addPlot(dsp1);
		}
		if(solsticeHiver.size()>0) {
			DataSetPlot dsp2 = new DataSetPlot(solsticeHiver);
			dsp2.setPlotStyle(styleSolstice);
			dsp2.setTitle("SolsticeHiver");
			jp.addPlot(dsp2);
		}
	}
	
	
	
	public static void main(String[] args) {
		RotationTerre sys = new RotationTerre(10,new Point3D(0,0,1));
		Facette f0 = new Facette(new Point3D(-1,-1,0),new Point3D(-1,1,0),new Point3D(1,-1,0));
		Facette f1 = new Facette(new Point3D(1,1,0),new Point3D(1,-1,0),new Point3D(-1,1,0));
		Facette f2 = new Facette(new Point3D(-2,-1,0),new Vecteur(0,0,3),new Vecteur(4,0,0));
		Facette f3 = new Facette(new Point3D(-2,1,0),new Vecteur(0,0,3),new Vecteur(4,0,0));
		sys.ajouterFacette(f3);
		sys.ajouterFacette(f2);
		sys.ajouterFacette(f1);
		sys.ajouterFacette(f0);
		Affichage test = new Affichage(sys);
		JFrame f = new JFrame();
		f.getContentPane().add(test);
		f.pack();
		f.setLocationRelativeTo(null);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);
	}
}*/
